#ifndef __FLVECTOR3_H__
#define __FLVECTOR3_H__

/*
	-== Description ==-

	Vector with 3 points class, some of this code is from
	and addon of openFrameworks, other parts are from different
	functions found on the net

	TODO:
	- Check if you need
*/

/*
	src: openFrameworks v0063 > addons/ofxVec3.h
*/

class flVector3
{
	public:
		// Variables
		float x, y, z;
		// Constructor
		flVector3(float _x = 0, float _y = 0, float _z = 0);
		// Set
		void set(float _x, float _y, float _z);
		
		/*
			Overloading operators
		*/
		// Check similar
		bool operator==(const flVector3& v);
		bool operator!=(const flVector3& v);

		// Functions with other Vector3
		void		operator=	(const flVector3& v);
		flVector3	operator+	(const flVector3& v) const;
		flVector3&	operator+=	(const flVector3& v);
		flVector3	operator-	(const flVector3& v) const;
		flVector3&	operator-=	(const flVector3& v);
		flVector3	operator*	(const flVector3& v) const;
		flVector3&	operator*=	(const flVector3& v);
		flVector3	operator/	(const flVector3& v) const;
		flVector3&	operator/=	(const flVector3& v);

		// Functions with float
		void		operator=	(const float f);
		flVector3	operator+	(const float f) const;
		flVector3&	operator+=	(const float f);
		flVector3	operator-	(const float f) const;
		flVector3&	operator-=	(const float f);
		flVector3	operator*	(const float f) const;
		flVector3&	operator*=	(const float f);
		flVector3	operator/	(const float f) const;
		flVector3&	operator/=	(const float f);
};
#endif